今天我們會透過 Gaussian Mixture Model 來分析購物中心的客戶資料。
資料集的資料包括:
import numpy as np
import pandas as pd
import re
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from sklearn.preprocessing import StandardScaler
from sklearn.mixture import GaussianMixture
import warnings
warnings.filterwarnings("ignore")
from sklearn.cluster import KMeans
:用於K均值聚類分析。from sklearn.preprocessing import StandardScaler
:用於標準化數據,即將數據轉換為均值為0,方差為1的分佈。from sklearn.mixture import GaussianMixture
:用於執行高斯混合模型(Gaussian Mixture Model,GMM)的聚類分析。# Reading dataset
df = pd.read_csv("../input/customer-segmentation-tutorial-in-python/Mall_Customers.csv")
# cleaning/renaming column names
df.rename(columns={'Annual Income (k$)':'AnnualIncome(k$)',
'Spending Score (1-100)':'SpendingScore(1-100)',
},
inplace=True)
# Dropping CustomerID column
df.drop(['CustomerID'], inplace = True, axis = 1)
# Transforming Gender
df.Gender[df.Gender == 'Male'] = 1
df.Gender[df.Gender == 'Female'] = 0
df["age_cat"] = pd.cut(
df['Age'],
bins = [0,35,55,100], # Else devise your bins: [0,20,60,110]
labels= ["y", "m", "s"]
)
df["income_cat"] = pd.cut(
df['AnnualIncome(k$)'],
bins = 3,
labels= ["l", "m", "h"]
)
首先,使用 rename
方法,將資料框(DataFrame)的某些列名進行了重新命名。
接著,使用 drop
方法,刪除了資料框中的 "CustomerID"
這一列。這樣做的目的是去除不需要的客戶ID資訊。
同時,也對 "Gender"
這一列進行了轉換,將男性表示為1,女性表示為0。
接著使用 cut
方法,將 "Age"
這一列數值型特徵進行了分類。
將年齡區間劃分為三個類別:'y'
(年輕)、'm'
(中年)、's'
(老年),並將結果存儲在新的 "age_cat"
列中。
最後,再次使用 cut
方法,這次是對 "AnnualIncome(k$)"
這一列進行分類。
它將年收入區間分為三個類別:'l'
(低收入)、'm'
(中等收入)、'h'
(高收入),並將結果存儲在新的 "income_cat" 列中。
# Drop Categorical Values
df.drop(columns=['age_cat', 'income_cat'], inplace=True)
# Scaling using StandardScaler
ss = StandardScaler()
ss.fit(df)
X = ss.transform(df)
先從資料框(DataFrame)中刪除名為 'age_cat'
和 'income_cat'
的列,這些列可能包含類別值或非數值資料。
接下來,使用 sklearn 中的 StandardScaler()
對剩餘的數值列進行標準化,將資料縮放為均值為0,標準差為1的標準分佈,並將標準化後的資料存儲在變數 X 中,以供後續的機器學習或統計分析使用。
# Perform clsutering
gm = GaussianMixture(
n_components = 2,
n_init = 10,
max_iter = 100)
# Train the algorithm
gm.fit(X)
# Clusters labels
gm.predict(X)
最後,我們使用高斯混合模型 (Gaussian Mixture Model,縮寫為 GM) 來進行資料分群,並用已經訓練好的模型對資料集 X
進行預測。
完整的 code 可以去 Kaggle Notebook 實際執行喔~
明天要進入新的系列 Multilayer Perceptron / Neural Network
歡迎更仔細閱讀以下相關內容以了解本篇知識